Unicode To UTF8 Online· 开发者工具箱

您所在的位置:网站首页 unicode编码 在线 Unicode To UTF8 Online· 开发者工具箱

Unicode To UTF8 Online· 开发者工具箱

2023-08-27 07:26| 来源: 网络整理| 查看: 265

Unicode To UTF8 编码与解码UTF-8 小解

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。见 UTF-8。

它可以用一至四个字节对 Unicode 字符集中的所有有效编码点进行编码,属于Unicode标准的一部分,由于较小值的编码点一般使用频率较高,直接使用Unicode编码效率低下,大量浪费内存空间。

UTF-8就是为了解决向后兼容ASCII码而设计,Unicode中前128个字符,使用与ASCII码相同的二进制值的单个字节进行编码,而且字面与ASCII码的字面一一对应,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。

UTF8 Code Point PrefixNumber of bytesBits for code pointFirst code pointLast code pointByte 1Byte 2Byte 3Byte 417U+0000U+007F0xxxxxxx211U+0080U+07FF110xxxxx10xxxxxx316U+0800U+FFFF1110xxxx10xxxxxx10xxxxxx421U+10000U+10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx

其中:

128个 ASCII 字符只需一个字节编码(Unicode范围由U+0000至U+007F)。带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。基本平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。辅助平面的字符使用四字节编码,比如 emoji 表情(Unicode范围由U+0800至U+FFFF)。转化过程将数据转化为 unicode 的 codePoint,在 JS 中可借助于 str.codePointAt(0)将转化后的 codePoint 根据前缀表确定其所占用的字节数,如 codePoint 为 U+0801,范围在 U+0800 与 U+FFFF 之间,占用三个字节根据字节数,确定其前缀,并将 codePoint 转化为二进制从右填充将每八个二进制计算得出其 UTF-8 编码

如,山

根据 '山'.codePointAt().toString(16) 得出其十六进制为 0x9053根据 0x9053,可知其占用三个字节,确定前缀 1110xxxx 10xxxxxx 10xxxxxx 并根据自身大小进行填充,得到 11101001 10000001 10010011根据填充所得的码,转化为三个 UTF-8,得到 E9 81 93APIJS

在 Javascript 中,可借助于 TextEcoder API 进行转化

export function stringToUint8 (s: string): Uint8Array { const enc = new TextEncoder() return enc.encode(s)} export function uint8ToString (uint8: Uint8Array): string { const enc = new TextDecoder() return enc.decode(uint8)}Python> '山月'.encode()b'\xe5\xb1\xb1\xe6\x9c\x88' > b'\xe5\xb1\xb1\xe6\x9c\x88'.decode()山月


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3